function move(ele, data, cb){
  // if(ele.t) return;
  clearInterval(ele.t);
  ele.t = setInterval(()=>{
    let flag = true;
    for(let attr in data){
      const now = parseInt(getStyle(ele, attr));
      let speed = (data[attr] - now)/8;
      speed = speed < 0 ? Math.floor(speed) : Math.ceil(speed);
      ele.style[attr] = now + speed + "px";
      if(now !== data[attr]) flag = false;
    }
    if(flag){
      clearInterval(ele.t);
      // ele.t = undefined;
      cb && cb();
    }
  }, 30)
}
function getStyle(ele, attr){
  return ele.currentStyle ? ele.currentStyle[attr] : getComputedStyle(ele)[attr];
}